<?php
// use LSYS\ORM\Cache;
use ORM\ORMOrder;
use ORM\EntityOrder;
include __DIR__."/Bootstarp.php";

//ORM使用,实际开发建议把ORM操作封装与model中,见 model.php 示例

//方式1.
//注意:如果你注重代码效率,不建议使用,请直接看下一种方法
//使用此方法在运行时分析表结构及动态创建属性
//效率上比下面方法慢2-3倍左右

//只需提供表名
// $table_name="order";
// $order=new LSYS\ORM\Active($table_name);

// $e=$order->where("id", "=", 1)->find()->entity();

// if ($e->loaded()){
// 	echo $e->id;
// 	print_r($e->as_array());
// }
// exit;
// 方法调用跟方法2相同


//方式2. 
//此方式需预先根据数据库生成对应的ORM
//运行时不需要解析表及动态建立属性,效率高
//生成ORM有对应的辅助工具,为了更好管理代码,建议继承生成类进行操作
//参数: 生成ORM对应的存放命名空间 存放ORM的目录 不需要的表数组 链接数据库

//以下示例请先生成ORM
// > php ../bin/lorm --config_dir=./config --namespace=ORM

//###ORM具体使用
//---------------------------插入记录----------------------
$e= new EntityOrder();
$e->title="this is title";
$e->sn="SN001";
$e->add_time=time();
$order=$e->get_orm();
try{
	$order->save();
}catch (\LSYS\ORM\Exception $err){
	echo $err->getMessage();
}

echo $e->pk();
echo "\n";
print_r($e->as_array());
echo "\n\n\n";

//---------------------------------查找------------------
$order=new ORMOrder();
$order->where("id", "=",1)->find();
//得到实体
$e=$order->entity();
if ($e->loaded()){
	echo ($e->id);
	echo "\n";
	print_r($e->as_array());
	//查找到结果
}
echo "\n\n\n";

//-------------------------更新-----------------------------
$order=new ORMOrder();
$order->where("id", "=",1)->find();
$e=$order->entity();
$e->title="update title 1";
try{
	$order->save();
}catch (\LSYS\ORM\Exception $err){
	echo $err->getMessage();
}
//通过重新从数据库加载记录测试是否更改成功
$order->reload();
echo $e->title;
echo "\n\n\n";

//-------------------------删除-----------------------------
$order=new ORMOrder();
$order->where("id", "=",18)->find();
if ($order->entity()->loaded()){
	try{
		$order->delete();
	}catch (\LSYS\ORM\Exception $e){
		//删除失败抛出异常
	}
}
//重新加载记录看下是否删除了..
$order->reload();
var_dump($order->entity()->pk());

//--------------------------批量查找------------------------
$order->reset()->where("sn", "=", "SN001");
$result=$order->find_all();

//result to array
//print_r($result->as_array());

foreach ($result as $v){
	echo "id:".$v->id;
	echo "\n";
	echo "title:".$v->title;
	echo "\n";
}
